(define (st-is st typ)
  (cond
   ((eq? typ '赋值常量)
    (cond
     ((eq? st '字符常量) #t)
     ((eq? st '字符串) #t)
     ((eq? st '整数) #t)
     ((eq? st '小数) #t)
     ((eq? st '分数) #t)
     ((eq? st '指数数) #t)
     ((eq? st '二进制常数) #t)
     ((eq? st '八进制常数) #t)
     ((eq? st '十六进制常数) #t)
     ((eq? st '十进制常数) #t)
     ((eq? st '扩展常量) #t)
     ((eq? st '系统值常量) #t)
     ((eq? st '列表常量) #t)
     ((eq? st '注册常量) #t)
     ((eq? st '系统常量) #t)
     (else #f)))
   ((eq? typ '函数定义常量)
    (cond
      ((eq? st '系统语言常量) #t)
      ;;((eq? st '系统值常量) #t)
      ((eq? st '系统处理常量) #t)
      (else #f)))
   ((eq? typ '常量)
     (cond
     ((eq? st '字符常量) #t)
     ((eq? st '字符串) #t)
     ((eq? st '字符串常量) #t)
     ((eq? st '整数) #t)
     ((eq? st '小数) #t)
     ((eq? st '分数) #t)
     ((eq? st '指数数) #t)
     ((eq? st '二进制常数) #t)
     ((eq? st '八进制常数) #t)
     ((eq? st '十六进制常数) #t)
     ((eq? st '十进制常数) #t)
     ((eq? st '系统常量) #t)
     ((eq? st '系统值常量) #t)
     ((eq? st '系统变量常数) #t)
     ((eq? st '扩展常量) #t)
     ((eq? st '列表常量) #t)
     ((eq? st '注册常量) #t)
     ((eq? st '符号常量) #t)
     (else #f)))
   ((eq? typ '变量)
    (cond
     ((eq? st '系统变量) #t)
     ((eq? st '外部变量) #t)
     ((eq? st '宏引导变量) #t)
     ((eq? st '局部变量) #t)
     ((eq? st '全局变量) #t)
     ((eq? st '@表达式变量) #t)
     ((eq? st '注册变量) #t)
     ((eq? st '别名变量) #t)
     ((eq? st '参数变量) #t)
     ((eq? st '参数) #t)
     ((eq? st '词语) #t)
     (else #f)))
   ((eq? typ '隐参变量)
    (cond
     ((eq? st '全局变量) #t)
     ((eq? st '局部变量) #t)
     ((eq? st '外部变量) #t)
     ((eq? st '参数变量) #t)
     (else #f)))
   ((eq? typ '注册符号)
    (cond
     ((eq? st '符号) #t)
     ((eq? st '全局变量) #t)
     ((eq? st '局部变量) #t)
     ((eq? st '外部变量) #t)
     ((eq? st '外部函数) #t)
     ((eq? st '外部宏函数) #t)
     ((eq? st '外部无参函数) #t)
     ((eq? st '参数变量) #t)
     (else #f)))
   ((eq? typ '位置符号)
    (cond
     ((eq? st '文件名) #t)
     ((eq? st '网络位置) #t)
     ((eq? st '符号位置) #t)
     (else #f)))
   ((eq? typ '无参函数)
    (cond
     ((eq? st '无参函数) #t)
     ((eq? st '系统无参函数) #t)
     ((eq? st '外部无参函数) #t)
     ((eq? st '无参局部函数) #t)
     ;;((eq? st 'lisp系统函数) #t)
     (else #f)))
   ((eq? typ '不处理符号)
    (cond
     ((eq? st '单行注释) #t)
     ((eq? st '多行注释) #t)
     ;;((eq? st '分隔符) #t)
     ;;((eq? st '结束分隔符) #t)
     ;;((eq? st '语句终结分隔符) #t)
     ;;((eq? st '函数定义分隔符) #t)
     ((eq? st 'lisp-begin) #t)
     ((eq? st 'lisp-end) #t)
     (else #f)))
   ((eq? typ '无需处理符号)
    (cond
     ((eq? st '单行注释) #t)
     ((eq? st '多行注释) #t)
     ((eq? st '分隔符) #t)
     ((eq? st '结束分隔符) #t)
     ((eq? st '语句终结分隔符) #t)
     ((eq? st '函数定义分隔符) #t)
     ((eq? st 'lisp-begin) #t)
     ((eq? st 'lisp-end) #t)
     (else #f)))
   ((eq? typ 'y表达式函数名定义)
    (cond
     ((eq? st 'y表达式函数名定义) #t)
     ((eq? st '无限参数函数名定义) #t)
     (else #f)))
   ((eq? typ '函数)
    (cond
     ((eq? st 'y表达式调用) #t)
     ((eq? st '无参函数调用) #t)
     ((eq? st '@表达式函数) #t)
     ((eq? st '函数名y表达式) #t)
     ((eq? st '函数名@表达式) #t)
     ((eq? st '系统函数) #t)
     ((eq? st '外部函数) #t)
     ((eq? st '本地函数) #t)
     ((eq? st '片段函数) #t)
     ((eq? st '系统宏) #t)
     ((eq? st '外部宏) #t)
     ((eq? st '本地宏) #t)
     ((eq? st '片段宏) #t)
     ((eq? st '注册宏) #t)
     ((eq? st '别名函数) #t)
     ((eq? st '别名宏) #t)
     (else #f)))
   ((eq? typ '函数名定义)
    (cond
     ((eq? st '函数名定义) #t)
     ((eq? st '无参函数名定义) #t)
     ((eq? st 'y表达式函数名定义) #t)
     ((eq? st 'at表达式函数名定义) #t)
     ((eq? st 'at表达式无参函数名定义) #t)
     ((eq? st '无限参数函数名定义) #t)
     (else #f)))
   ((eq? typ 'y表达式函数)
    (cond
     ((eq? st 'y表达式调用) #t)
     ((eq? st 'y表达式函数名定义) #t)
     ((eq? st 'at表达式函数名定义) #t)
     (else #f)))
   (else #f)))
(define (var-is  st)
  (cond
   ((eq? st '系统变量) #t)
   ((eq? st '外部变量) #t)
   ((eq? st '全局变量) #t)
   ((eq? st '局部变量) #t)
   ((eq? st '参数变量) #t)
   ((eq? st '参数) #t)
   ((eq? st '注册变量) #t)
   ((eq? st '别名变量) #t)
   (else #f)))
(define (func-is st)
   (cond
     ((eq? st 'y表达式调用) #t)
     ((eq? st '无参函数调用) #t)
     ((eq? st '@表达式函数) #t)
     ((eq? st '函数名y表达式) #t)
     ((eq? st '函数名@表达式) #t)
     ((eq? st '系统函数) #t)
     ((eq? st '外部函数) #t)
     ((eq? st '函数) #t)
     ((eq? st '局部函数) #t)
     ((eq? st '公用局部函数) #t)
     ;;((eq? st '系统宏) #t)
     ;;((eq? st '外部宏) #t)
     ;;((eq? st '本地宏) #t)
     ;;((eq? st '片段宏) #t)
     ;;((eq? st '注册宏) #t)
     ((eq? st '别名函数) #t)
     ;;((eq? st '别名宏) #t)
     (else #f)))
(define (cons-is st)
   (cond
     ((eq? st '字符常量) #t)
     ((eq? st '字符串) #t)
     ((eq? st '整数) #t)
     ((eq? st '小数) #t)
     ((eq? st '分数) #t)
     ((eq? st '指数数) #t)
     ((eq? st '二进制常数) #t)
     ((eq? st '八进制常数) #t)
     ((eq? st '十六进制常数) #t)
     ((eq? st '十进制常数) #t)
     ((eq? st '系统常量) #t)
     ((eq? st '系统值常量) #t)
     ((eq? st '系统变量常数) #t)
     ;;((eq? st '单行注释) #t)
     ;;((eq? st '多行注释) #t)
     ((eq? st '扩展常量) #t)
     ((eq? st '列表常量) #t)
     ((eq? st '注册常量) #t)
     ((eq? st '符号常量) #t)
     (else #f)))
(define (num-cons-is st)
   (cond
    ((eq? st '整数) #t)
    ((eq? st '小数) #t)
    ((eq? st '分数) #t)
    ((eq? st '指数数) #t)
    (else #f)))
(define (assign-cons-is st)
   (cond
     ((eq? st '字符常量) #t)
     ((eq? st '字符串) #t)
     ((eq? st '整数) #t)
     ((eq? st '小数) #t)
     ((eq? st '分数) #t)
     ((eq? st '指数数) #t)
     ((eq? st '二进制常数) #t)
     ((eq? st '八进制常数) #t)
     ((eq? st '十六进制常数) #t)
     ((eq? st '十进制常数) #t)
     ((eq? st '扩展常量) #t)
     ((eq? st '系统值常量) #t)
     ((eq? st '列表常量) #t)
     ((eq? st '注册常量) #t)
     (else #f)))
(define (func-define-cons-is st)
  (cond
      ((eq? st '系统语言常量) #t)
      ;;((eq? st '系统值常量) #t)
      ((eq? st '系统处理常量) #t)
      (else #f)))
(define (no-par-func-is st)
   (cond
     ((eq? st '无参函数) #t)
     ((eq? st '系统无参函数) #t)
     ((eq? st '外部无参函数) #t)
     ((eq? st '无参局部函数) #t)
     ;;((eq? st 'lisp系统函数) #t)
     (else #f)))
(define (no-handle-sym-is st)
  (cond
     ((eq? st '单行注释) #t)
     ((eq? st '多行注释) #t)
     ((eq? st '分隔符) #t)
     ;;((eq? st '结束分隔符) #t)
     ((eq? st '宏终结分隔符) #t)
     ;;((eq? st '函数定义分隔符) #t)
     ((eq? st 'lisp-begin) #t)
     ((eq? st 'lisp-end) #t)
     (else #f)))
(define (not-need-handle-is st)
    (cond
     ((eq? st '单行注释) #t)
     ((eq? st '多行注释) #t)
     ((eq? st '分隔符) #t)
     ((eq? st '结束分隔符) #t)
     ((eq? st '宏终结分隔符) #t)
     ((eq? st '函数定义分隔符) #t)
     ((eq? st 'lisp-begin) #t)
     ((eq? st 'lisp-end) #t)
     (else #f)))
(define (func-name-define-is st)
   (cond
     ((eq? st '函数名定义) #t)
     ((eq? st '无参函数名定义) #t)
     ((eq? st '无限参数函数名定义) #t)
     ((eq? st 'y表达式函数名定义) #t)
     ((eq? st 'at表达式函数名定义) #t)
     ((eq? st 'at表达式无参函数名定义) #t)
     (else #f)))
(define (y-exp-is st)
  (cond
     ((eq? st 'y表达式调用) #t)
     ((eq? st 'y表达式函数名定义) #t)
     ((eq? st 'at表达式函数名定义) #t)
     (else #f)))
(define (lisp-call-is st)
  (cond
   ((eq? st 'lisp-call) #t)
   ((eq? st 'lisp-quote-call) #t)
   ((eq? st 'lisp-backquote-call) #t)
   (else #f)))

